/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package command;

import javax.swing.JOptionPane;
import presenter.CadPacientePresenter;
import state.EstadoVisualizar;

/**
 *
 * @author KDC
 */
public abstract class AbstractCommandCad {

    CadPacientePresenter cadPaciente;

    public AbstractCommandCad(CadPacientePresenter cadPac) {
        cadPaciente = cadPac;
    }

    public abstract void executar();

    protected boolean verificar() {
        boolean retorno = false;
        if (cadPaciente.getView().getJtNome().getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Campo Nome Vazio!");
        } else if (cadPaciente.getView().getJtdataNascimento().getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Campo Data de Nascimento Vazio!");
        } else if (cadPaciente.getView().getJcSexo().getSelectedIndex() == 0) {
            JOptionPane.showMessageDialog(null, "Campo Sexo Vazio!");
        } else if (cadPaciente.getView().getJtAltura().getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Campo Altura Vazio!");
        } else if (cadPaciente.getView().getJtPeso().getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Campo Peso Vazio!");
        } else if (cadPaciente.getView().getJtQuadril().getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "Campo Medida do Quadril Vazio!");
        } else retorno = true;
        return retorno;
    }

    protected void cadastrar() {
        cadPaciente.getCp().cadastarPaciente(cadPaciente.getView().getJtNome().getText(), cadPaciente.getView().getJtdataNascimento().getText(),
                cadPaciente.getView().getJcSexo().getSelectedItem().toString().charAt(0), Double.parseDouble(cadPaciente.getView().getJtAltura().getText()),
                Double.parseDouble(cadPaciente.getView().getJtPeso().getText()), Double.parseDouble(cadPaciente.getView().getJtQuadril().getText()),
                Double.parseDouble(cadPaciente.getView().getJtCintura().getText()));

        cadPaciente.getLog().escreve("Inserindo o Paciente " + cadPaciente.getView().getJtNome().getText() + ", peso: " + cadPaciente.getView().getJtPeso().getText() + ", altura: " + cadPaciente.getView().getJtAltura().getText() + " no arquivo.");
        //Atualiza os Labels com as Classificações

        cadPaciente.getView().getJlClassificacaoIMC().setText(cadPaciente.getCp().exibeClassificacaoDoMetodo(cadPaciente.getView().getJtNome().getText(), "IMC"));
        cadPaciente.getView().getJlClassificacaoIAC().setText(cadPaciente.getCp().exibeClassificacaoDoMetodo(cadPaciente.getView().getJtNome().getText(), "IAC"));
        cadPaciente.getView().getJlClassifcCC().setText(cadPaciente.getCp().exibeClassificacaoDoMetodo(cadPaciente.getView().getJtNome().getText(), "CC"));
        cadPaciente.getView().getJlClassifcRCQ().setText(cadPaciente.getCp().exibeClassificacaoDoMetodo(cadPaciente.getView().getJtNome().getText(), "RCQ"));

        cadPaciente.getView().getJlIMC().setText(cadPaciente.getCp().buscarValorMetodoCalculo(cadPaciente.getView().getJtNome().getText(), "IMC"));
        cadPaciente.getView().getJlIAC().setText(cadPaciente.getCp().buscarValorMetodoCalculo(cadPaciente.getView().getJtNome().getText(), "IAC"));
        cadPaciente.getView().getJlCC().setText(cadPaciente.getCp().buscarValorMetodoCalculo(cadPaciente.getView().getJtNome().getText(), "CC"));
        cadPaciente.getView().getJlRCQ().setText(cadPaciente.getCp().buscarValorMetodoCalculo(cadPaciente.getView().getJtNome().getText(), "RCQ"));

        cadPaciente.setPaciente(cadPaciente.getCp().buscarPaciente(cadPaciente.getView().getJtNome().getText()));

        //Acabei de salvar, entao entra pro estado de visualização
        cadPaciente.setEstado(new EstadoVisualizar(cadPaciente));
    }
}
